<!-- The general "record" type is used as the type of the item class' properties property, and the type of the duplicate and make commands "with properties" parameters. Cocoa's default implementation of the duplicate, make, get, and set command have special code to handle the fact that merely declaring something to be of record type doesn't provide enough information to convert Apple event record descriptors to NSDictionaries. That code only kicks in for specific instances, and you can't get at it. Instead of using this, you should declare specific record types (see "print settings" for example) and use those for class properties and command parameters. That's better scriptability anyway. -->
<value-type name="record" code="reco">
<cocoa class="NSDictionary"/>
</value-type>
<value-type name="rectangle" code="qdrt">
<cocoa class="NSData"/>
</value-type>
<value-type name="specifier" code="obj ">
<cocoa class="NSScriptObjectSpecifier"/>
</value-type>
<!-- We use 'TEXT' (typeChar, in <AE/AEDataModel.h>) as the four character code of the text type to make parameters and properties declared with this type appear as "text" in scripting dictionaries. The alternatives, "Unicode text" and "string" for example, are needlessly technical terms and not fit for presentation to people writing scripts. Cocoa does however always use Unicode internally when converting from/to Apple event descriptors for the best possible fidelity. -->
<value-type name="text" code="TEXT">
<cocoa class="NSString"/>
</value-type>
<value-type name="type" code="type">
<cocoa class="NSNumber"/>
</value-type>
<command name="get" code="coregetd" description="Returns the value of the specified object(s).">
<cocoa class="NSGetCommand"/>
<direct-parameter type="specifier"/>
<result type="any"/>
</command>
<command name="set" code="coresetd" description="Sets the value of the specified object(s).">
<cocoa class="NSSetCommand"/>
<direct-parameter type="specifier"/>
<parameter name="to" code="data" type="any" description="The new value.">